package com.spark.common.core.entity.system;

import com.baomidou.mybatisplus.annotation.OrderBy;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.spark.common.annotation.Dict;
import com.spark.common.annotation.query.Query;
import com.spark.common.constants.QueryConstants;
import com.spark.common.core.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.*;

/**
 * 系统登录日志
 *
 * @author LYCHEE
 * @date 2025/03/24 15:38
 */
@Data
@TableName("sys_login_log")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class SysLoginLog extends BaseEntity {

    /**
     * 用户账号
     */
    @Query(QueryConstants.QUERY_EQ)
    @NotBlank(message = "用户账号不能为空")
    @Dict(dictTable = "sys_user", dictCode = "username", dictText = "nickname")
    private java.lang.String username;

    /**
     * 登录IP地址
     */
    @Query(QueryConstants.QUERY_LIKE)
    @NotBlank(message = "登录IP地址不能为空")
    private java.lang.String ipaddr;

    /**
     * 登录地点
     */
    @Query(QueryConstants.QUERY_LIKE)
    private java.lang.String loginLocation;

    /**
     * 浏览器类型
     */
    private java.lang.String browser;

    /**
     * 操作系统
     */
    private java.lang.String os;

    /**
     * 登录状态
     *  : 0成功 1失败
     */
    @Dict(dictCode = "ok_fail")
    private java.lang.Integer status;

    /**
     * 提示消息
     */
    private java.lang.String msg;

    /**
     * 访问时间
     */
    @OrderBy(asc = false, sort = 6)
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date loginTime;

}
